export default {
  // 开启命名空间
  namespaced: true,

  // 数据
  state: () => ({
    // 读取本地的收货地址数据，初始化 address 对象
    // address: JSON.parse(uni.getStorageSync('address') || '[]'),
    defaultAddress: JSON.parse(uni.getStorageSync('defaultAddress') || '{}'),
    // 登录成功之后的 token 字符串
    token: uni.getStorageSync('token') || '',
    // 用户的基本信息
    // userinfo: JSON.parse(uni.getStorageSync('userinfo') || '{}'),
    userinfo: {},
    // 重定向的 object 对象 { openType, from }
    redirectInfo: null,

    // 用户的运动计划
    // planList: JSON.parse(uni.getStorageSync('planList') || '[]'),
    planList: [],
    // 用户的所有运动记录
    // recordList: JSON.parse(uni.getStorageSync('recordList') || '[]'),
    recordList: [],
    // 用户的打卡日历
    // clockInList: JSON.parse(uni.getStorageSync('clockInList') || '[]'),
    clockInList: [],
    // 用户收藏的文章
    // articleList: JSON.parse(uni.getStorageSync('articleList') || '[]'),
    articleList: [],
    //用户收藏的视频
    // videoList: JSON.parse(uni.getStorageSync('videoList') || '[]'),
    videoList: [],

    // 用户的作品列表
    userTrendList: [],
    // 用户喜欢的作品列表
    userLikeTrendList: [],
  }),

  // 方法
  mutations: {
    // 更新收货地址数组
    updateAddress(state, address) {
      if (state.defaultAddress.address === undefined) {
        state.defaultAddress = address[0]
        this.commit('m_user/saveDefaultAddressToStorage')
      }
      state.userinfo.userAddress = address
      this.commit('m_user/saveUserInfoToStorage')
    },
    // 删除默认收货地址
    removeDefaultAddress(state, address) {
      state.defaultAddress = address
      this.commit('m_user/saveDefaultAddressToStorage')
    },
    // 更新收获地址
    updateDefaultAddress(state, index) {
      var address = []
      if (typeof state.userinfo.userAddress !== 'object') {
        address = JSON.parse(state.userinfo.userAddress || "[]")
      } else {
        address = state.userinfo.userAddress
      }
      state.defaultAddress = address[index]
      this.commit('m_user/saveDefaultAddressToStorage')
    },
    // 定义将 address数组 持久化存储到本地 mutations 方法
    saveAddressToStorage(state) {
      uni.setStorageSync('address', JSON.stringify(state.address))
    },
    // 定义将 address对象 持久化存储到本地 mutations 方法
    saveDefaultAddressToStorage(state) {
      uni.setStorageSync('defaultAddress', JSON.stringify(state.defaultAddress))
    },
    // 更新用户的基本信息
    updateUserInfo(state, userinfo) {
      state.userinfo = userinfo
      // 通过 this.commit() 方法，调用 m_user 模块下的 saveUserInfoToStorage 方法，将 userinfo 对象持久化存储到本地
      this.commit('m_user/saveUserInfoToStorage')
    },
    // 更新用户的背景图
    updateUserBgImg(state, userBgImg) {
      state.userinfo.userBgImg = userBgImg
      this.commit('m_user/saveUserInfoToStorage')
    },
    // 更新用户的头像
    updateUserAvatar(state, userAvatar) {
      state.userinfo.userAvatar = userAvatar
      this.commit('m_user/saveUserInfoToStorage')
    },
    // 将 userinfo 持久化存储到本地
    saveUserInfoToStorage(state) {
      uni.setStorageSync('userinfo', JSON.stringify(state.userinfo))
    },
    // 更新 token 字符串
    updateToken(state, token) {
      state.token = token
      // 通过 this.commit() 方法，调用 m_user 模块下的 saveTokenToStorage 方法，将 token 字符串持久化存储到本地
      this.commit('m_user/saveTokenToStorage')
    },
    // 将 token 持久化存储到本地
    saveTokenToStorage(state) {
      uni.setStorageSync('token', state.token)
    },
    // 更新重定向的信息对象
    updateRedirectInfo(state, info) {
      state.redirectInfo = info
    },

    // 更新用户的运动计划
    updateUserPlanList(state, planList) {
      state.planList = planList
      this.commit('m_user/saveUserPlanListToStorage')
    },
    // 将 planList 持久化存储到本地
    saveUserPlanListToStorage(state) {
      uni.setStorageSync('planList', JSON.stringify(state.planList))
    },

    // 更新用户所有的运动记录
    updateUserRecordList(state, recordList) {
      state.recordList = recordList
      this.commit('m_user/saveUserRecordListToStorage')
    },

    // 将 recordList 持久化存储到本地
    saveUserRecordListToStorage(state) {
      uni.setStorageSync('recordList', JSON.stringify(state.recordList))
    },

    // 更新用户的打卡日历
    updateUserClockInList(state, clockInList) {
      state.clockInList = clockInList;
      this.commit('m_user/saveUserClockInListToStorage')
    },
    // 将 clockInList 持久化存储到本地
    saveUserClockInListToStorage(state) {
      uni.setStorageSync('clockInList', JSON.stringify(state.clockInList))
    },

    // 更新用户的文章列表
    updateUserArticleList(state, articleList) {
      state.articleList = articleList;
      this.commit('m_user/saveUserArticleListToStorage')
    },
    // 将 articleList 持久化存储到本地
    saveUserArticleListToStorage(state) {
      uni.setStorageSync('articleList', JSON.stringify(state.articleList))
    },


    // 更新用户的视频列表VideoList
    updateUserVideoList(state, videoList) {
      state.videoList = videoList;
      this.commit('m_user/saveUserVideoListToStorage')
    },
    // 将 videoList 持久化存储到本地
    saveUserVideoListToStorage(state) {
      uni.setStorageSync('videoList', JSON.stringify(state.videoList))
    },

    // 获取用户动态列表
    // getUserTrendList(state, list) {
    //   state.userTrendList = list
    //   this.commit('m_user/saveUserTrendListToStorage')
    // },
    // 更新用户动态列表
    updateUserTrendList(state, trendList) {
      state.userTrendList = trendList
      // state.userTrendList.unshift(trend); // 将 trend 对象添加到数组前面
      this.commit('m_user/saveUserTrendListToStorage')
    },
    // 点赞数量+1
    // addUserTrendListLikeNum(state, createTime) {
    //   const targetIndex = state.userTrendList.findIndex(trend => trend.createTime === createTime);
    //   if (targetIndex !== -1) {
    //     state.userTrendList[targetIndex].likeNum++; // 找到目标对象后，将其 likeNum 值加 1
    //   }
    //   this.commit('m_user/saveUserTrendListToStorage')
    // },
    // 点赞数量-1
    // deleteUserTrendListLikeNum(state, createTime) {
    //   const targetIndex = state.userTrendList.findIndex(trend => trend.createTime === createTime);
    //   if (targetIndex !== -1) {
    //     state.userTrendList[targetIndex].likeNum--; // 找到目标对象后，将其 likeNum 值加 1
    //   }
    //   this.commit('m_user/saveUserTrendListToStorage')
    // },


    // 删除用户动态列表项
    // deleteUserTrendListItem(state, index) {
    //   state.userTrendList.splice(index, 1); // 删除 index 索引对应的记录
    //   this.commit('m_user/saveUserTrendListToStorage')
    // },
    // 定义将 userTrendList数组 持久化存储到本地 mutations 方法
    saveUserTrendListToStorage(state) {
      uni.setStorageSync('userTrendList', JSON.stringify(state.userTrendList))
    },

    // 获取用户喜欢的动态列表
    updateUserLikeTrendList(state, trendList) {
      state.userLikeTrendList = trendList
      this.commit('m_user/saveUserLikeTrendListToStorage')
    },
    // 更新用户喜欢的动态列表
    // updateUserLikeTrendList(state, trend) {
    //   state.userLikeTrendList.unshift(trend); // 将 trend 对象添加到数组前面
    //   this.commit('m_user/saveUserLikeTrendListToStorage')
    // },
    // 删除用户喜欢的动态列表项
    // deleteUserLikeTrendListItem(state, index) {
    //   state.userLikeTrendList.splice(index, 1); // 删除 index 索引对应的记录
    //   this.commit('m_user/saveUserLikeTrendListToStorage')
    // },
    // 定义将 userLikeTrendList数组 持久化存储到本地 mutations 方法
    saveUserLikeTrendListToStorage(state) {
      uni.setStorageSync('userLikeTrendList', JSON.stringify(state.userLikeTrendList))
    },
  },

  getters: {
    // 收货详细地址的计算属性
    addstr(state) {
      if (!state.defaultAddress.title) return ''
      // 拼接完整的字符串并返回给用户
      return state.defaultAddress.address + ' ' + state.defaultAddress.title + ' ' + state.defaultAddress.detailAddress
    },
  },
}